Windows 8.1 not detecting Drivers in c:\windows\inf\<added-subfolder>

Quite simply, in Windows 7 Pro I would drop driver folders into c:\windows\inf\<added-subfolder> that would cover all the systems we support.  At first boot after imaging, Windows 7 would recursively search for drivers in the default path c:\windows\inf which includes that <added-subfolder> with many subfolders containing many other drivers.

By the time the user logon was available, everything was installed and happy.  Everything worked great.

Yes it can extend the initial post-image boot time but it was worth it for an easy universal image.

Now with Windows 8.1u1 Pro I have tried the same mechanic (with 8.1u1 drivers of course) and it refuses to look in c:\windows\inf\<added-subfolder>.  Sysprep and my answerfile do their job but the system doesn't begin loading any drivers until reaching the desktop.  It appears that Windows is only initially loading critical drivers and even those are only the Win8 native ones.

Has something changed or been broken that I've missed?

Injecting these drivers with pnputil is not an option.  The registry bloats and breaks the image.  Neither is using SCCM an option.

It's a very simple solution but so far it's refusing to work with Win8.1u1 .

Installing via Update Driver on the device in Device Manager, then pointing to the subfolder, I get:

Windows encountered a problem installing the driver software for your device.
Windows found driver software for your device but encountered an error while attempting to install it.
The system cannot find the file specified.

I guess that's something to work with.  Digging ...

Update:  pnpunattend run as a script from an administrative group user pops user intervention errors for unsigned drivers.  Do I dare hope that if I alter my answerfile it won't?

I've added:

    <settings pass="specialize">
		<component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<RunSynchronous>
				<RunSynchronousCommand wcm:action="add">
					<Order>1</Order>
                    <WillReboot>Always</WillReboot>
                    <Description>PnPUnattend Install</Description>
					<Path>c:\windows\inf\xinf\pnpunattend.cmd</Path>
				</RunSynchronousCommand>
			</RunSynchronous>
		</component>
    </settings>

and:

    <settings pass="auditSystem">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>

Where c:\windows\inf\xinf\pnpunattend.cmd is:

REM Configuring PNP Driver Installation.. 
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UnattendSettings\PnPUnattend\DriverPaths\1" /v Path /t REG_SZ /d "C:\windows\inf\xinf" 
 
REM Installing PNPDeviceDrivers 
C:\Windows\System32\pnpUnattend.exe AuditSystem /L > c:\windows\temp\pnpunattend.txt


January 27th, 2015 6:22am

Eirc,

Don't use this method to inject the driver. it will be problem result.

read this guide to manager the driver from MDT, it's very convenience and simple:

http://www.deploymentresearch.com/Research/tabid/62/EntryId/112/MDT-2013-Lite-Touch-Driver-Management.aspx

Free Windows Admin Tool Kit Click here and download it now
January 29th, 2015 12:10pm

MDT as a solution assumes I have a central share and/or I'm using other Microsoft tools (WIM).  I am not.

FAT Images are created in Hyper-V 2012.

All drivers for all possible systems are copied into c:\windows\inf\xinf .

The VM is sysprep'd and generalized, then captured by FOG, then deployed by FOG.

Driver installations must be completed prior to any logon so that scripts launched by sysprep can work properly.

Windows 7 happily does this, loading all correct drivers BEFORE reaching any logon or the SetupComplete.cmd .

Can Windows 8 not do that without an external resource?

January 30th, 2015 10:16pm

Within the confines of how we create and deploy Windows, is there a _simple_ solution like what already works for Windows 7?

What we did for Windows 7 I assumed would also work for Windows 8.1u, but it doesn't:

1. FAT Images are created in Hyper-V 2012.

2. All drivers for all possible systems are copied into c:\windows\inf\xinf .

3. Sysprep 1 of the VM creates the default user profile which is then copied to a local, mandatory profile path.

4. Sysprep 2 of the VM then closes the image and shuts down.

5. The VM image is captured by FOG.

6. The image is deployed by FOG to any number of platforms.

5. At first boot Drivers are installed by the OS; before the sysprep calls a .vbs that is run before setupcomplete.cmd, then again by autologon as administrator for however many number of reboots/autologons that a particular system requires before releasing to a normal logon screen. 

All possible drivers a system requires MUST be installed prior to any logon so that scripts launched by sysprep can work properly.

Windows 7 happily does this as SYSTEM, loading all correct drivers BEFORE reaching any logon or scripts.

How can I mimic this behaviour in Windows 8 with no server or share resource?




Free Windows Admin Tool Kit Click here and download it now
January 30th, 2015 10:16pm

Within the confines of how we create and deploy Windows systems, is there a _simple_ solution for Windows 8 that results in the same as what we did for Windows 7?

1. FAT Images are created in Hyper-V 2012.

2. All drivers for all possible systems are copied into c:\windows\inf\xinf .

3. Sysprep 1 of the VM creates the default user profile which is then copied to a local, mandatory profile path.

4. Sysprep 2 of the VM then closes the image and shuts down.

5. The VM image is captured by FOG.

6. The image is deployed by FOG to any number of platforms.

7. At first boot the OS installs all drivers, recognizing the subfolder c:\windows\inf\xinf.

8. Eventually sysprep calls a designated .vbs that is run before setupcomplete.cmd, then again by autologon as administrator for however many number of reboots/autologons that a particular system requires before releasing to a normal logon screen. 

All possible drivers a system requires MUST be installed prior to any logon so that scripts launched by sysprep can work properly.

Windows 7 happily does all of this without issue BEFORE reaching any logon or scripts.

How can I mimic this behaviour in Windows 8.1u with no server or share resource?

The only way I've got Windows 8.1u to do it so far is to perform this prior to final shutdown by:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UnattendSettings\PnPUnattend\DriverPaths\1" /v Path /t REG_SZ /d "C:\windows\inf\xinf"

C:\Windows\System32\pnpUnattend.exe AuditSystem

=-=-=-=-=-

This bloats the image by several GiB and incurs many unverified publisher prompts to continue while pnpunattend executes, but sysprep loads all device drivers prior to any logon to a destination system, which is great!

I'm looking for specific answers that work within our framework please.


January 30th, 2015 10:16pm

Within the confines of how we create and deploy Windows systems, is there a _simple_ solution for Windows 8 that results in the same as what we did for Windows 7?

1. FAT Images are created in Hyper-V 2012.

2. All drivers for all possible systems are copied into c:\windows\inf\xinf .

3. Sysprep 1 of the VM creates the default user profile which is then copied to a local, mandatory profile path.

4. Sysprep 2 of the VM then closes the image and shuts down.

5. The VM image is captured by FOG.

6. The image is deployed by FOG to any number of platforms.

7. At first boot the OS installs all drivers, recognizing the subfolder c:\windows\inf\xinf.

8. Eventually sysprep calls a designated .vbs that is run before setupcomplete.cmd, then again by autologon as administrator for however many number of reboots/autologons that a particular system requires before releasing to a normal logon screen. 

All possible drivers a system requires MUST be installed prior to any logon so that scripts launched by sysprep can work properly.

Windows 7 happily does all of this without issue BEFORE reaching any logon or scripts.

How can I mimic this behaviour in Windows 8.1u with no server or share resource?

The only way I've got Windows 8.1u to do it so far is to perform this prior to final shutdown by:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UnattendSettings\PnPUnattend\DriverPaths\1" /v Path /t REG_SZ /d "C:\windows\inf\xinf"

C:\Windows\System32\pnpUnattend.exe AuditSystem

=-=-=-=-=-

This bloats the image by several GiB and incurs many unverified publisher prompts to continue while pnpunattend executes, but sysprep loads all device drivers prior to any logon to a destination system, which is great!

I'm looking for specific answers that work within our framework please.


Free Windows Admin Tool Kit Click here and download it now
January 30th, 2015 10:16pm

Bumped ... I'm not an idiot but I'll play one if it helps me out.

February 2nd, 2015 4:25pm

Okay so I included:

    <settings pass="auditSystem">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>

Into my closing.xml for sysprep.

I then processed all the drivers with MDT into a Deployment Share which I then copied manually in its entirety into c:\windows\inf\xinf .  Windows still refuses to recognize/use the drivers within.

Free Windows Admin Tool Kit Click here and download it now
February 3rd, 2015 11:31am

So far, only using pnpunattend to inject all drivers prior to sysprep shutdown does what I want. 

This is what I'm about to try.

1. Copy drivers to c:\windows\inf\xinf

2. sysprep /generalize /oobe /unattend:closer32.xml

3. No registry changes to client

4. The important bits of closer32.xml that applies to this situation.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="offlineServicing">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/temp/x86/sources/install.wim#Windows 8.1 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

February 3rd, 2015 2:07pm

While I wait on things ...

Why is it so hard to create a locally cached driver source for Windows 8.1u?


Free Windows Admin Tool Kit Click here and download it now
February 3rd, 2015 3:50pm

... and this didn't work either.

Next up, the same thing, but instead of the raw driver folder I will add the Distribution share in the same path.

Surely there's someone out there with a wonderfully verbose and contextually relevant solution to my situation?

February 3rd, 2015 6:52pm

While I wait on things ...

Why is it so hard to create a locally cached driver source for Windows 8.1u?


Free Windows Admin Tool Kit Click here and download it now
February 3rd, 2015 11:48pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics